Update Master Product
/products/{id}
As a Customer of iFoodDS, you use the iFoodDS Master Product API to update FSMA 204 master product data in the iFoodDS Trace Exchange platform. Records will be stored for a minimum of two years.
This endpoint is being refined and thus subject to change. These docs will update when changes are made.
PUT Request Behavior
PUT requests perform a full resource replacement. When you submit a PUT to this endpoint, the payload must contain the complete record, including all fields you want preserved. The server overwrites the existing record with the data you provide.
Any field not included in the PUT payload is treated as intentionally omitted and will be removed from the stored record.
Use PUT only when you intend to fully replace the previously submitted resource. Partial updates are not supported.
Request
Type: application/json
The {id} of the path is the ID retrieved from:
- Completion of a succesful POST. Example:
"request_ids": ["9ed5911f-f6a4-4ba2-9eb4-d6428237be28"] - Within the payload results of a GET. Example:
"id": "7b5c43c3-3526-4135-a602-0e3979c21d88"
The body of the request comprises one main section: the productMasterDataList.
{
"payloadId":"<payload id>",
"transmissionDateTime":"<transmission date time>",
"productMasterDataList": {
"itemCode": "<item code>",
"businessUnit": "<business unit>",
"itemDescription": "<item description>",
"isFtlItem": true,
"ftlCategory": "<FTL (Food Traceability List) category>",
"brandName": "<brand name>",
"packStyle": "<pack style>",
"packSize": "<pack size>",
"productCommodity": "<product commodity>",
"productVariety": "<product variety>",
"scientificName": "<scientific name>",
"acceptableSpeciesName": "<acceptable species name>",
"gtin": "<GTIN (Global Trade Item Number)>",
"itemUpc": "<item UPC (Universal Product Code)>",
"innerPackUpc": "<inner pack UPC>",
"plu": "<PLU (Price Look-up)>",
"alternateItemCode": "<alternate item code>",
"isCoveredByGdst": true,
"grossWeight": <gross weight>,
"grossWeightUOM": "<gross weight unit of measure>",
"netWeight": <net weight>,
"netWeightUOM": "<net weight unit of measure>"
}
}
Data Constraints
Please note the following data constraints:
stringsallow a maximum of 100 characters
Payload Data
Optional
payloadId(string): A unique payload id supplied by the party submitting the event.transmissionDateTime(datetime): The date and time the payload was sent.
Product Data
Required
itemCode(string): The vendor or purchaser item code that will be referenced in the product.itemDescription(string): Product Description from the product owner or original purchase order.
Optional
businessUnit(string): Indicates the business unit associated with the product.alternateItemCode(string): This field provides sender and shipper to use and alternate identifier for products. This could be a URL, a UUID, or other globally unique identification scheme. The important thing is that it is unique per product and shared between shipper and receiver. For example, this could be a GS1 Digital Link URL for the productgtin(string): Case-level Global Trade Identification Number (GTIN-14). https://www.gs1.org/docs/idkeys/GS1_GTIN_Executive_Summary.pdfitemUpc(string): Item-level Universal Product Code, may be GTIN-8, GTIN-12, or GTIN-13. GS1 GTIN Executive SummaryinnerPackUpc(string): Point of sale barcode, may be GTIN-8, GTIN-12, GTIN-13, or GTIN-14. GS1 GTIN Executive Summaryplu(string): Item-level Price Look-up Code. PLU Codes Search — IFPSisFtlItem(boolean): Indicates whether product is on the Food Traceability List (FTL)ftlCategory(string)*: Indicates the product's FTL category, i.e. “soft cheese”, “shell eggs”, “nut butter”, “cucumbers”, “herbs”, “leafy greens”, “melons”, “peppers”, “sprouts”, “tomatoes”, “tropical tree fruits”, “fresh-cut fruits”, “fresh-cut vegetables”, “finfish”, “smoked finfish”, “crustaceans”, “molluscan shellfish”, “ready-to-eat deli salads”, or “multiple-ftl-ingredients” *Required if on the FTLbrandName(string): The brand of the product that appears on the consumer packagepackStyle(string): Product's pack style, e.g. "Case", "Carton", "Tray", "Clamshell", etc.packSize(string): Product's pack size as Packaging Configuration OR Count OR Weight + Unit of Measure, e.g. "20 x 12 oz bags"productCommodity(string): For fresh produce, a description of the commodity, e.g. "Peppers"productVariety(string): For fresh produce a description of the variety when applicable, e.g. "Jalapeno"scientificName(string): For seafood the scientific name of the species, see: FDA Seafood ListacceptableSpeciesName(string): For seafood a description of the common species name, see: FDA Seafood ListisCoveredByGdst(boolean): Flag to indicate that product is part of GDSTgrossWeight(numeric): The total weight of the shipped produce item including all packaging materials, pallets, cartons, and containers as recorded on the ASN.grossWeightUOM(string): The unit of measure used to represent the gross weight value on the ASN (for example: LB, KG, OZ).netWeight(numeric): The weight of the produce product itself excluding packaging, pallets, cartons, and other shipping materials as recorded on the ASN.netWeightUOM(string): The unit of measure used to represent the net weight value on the ASN (for example: LB, KG, OZ).
Sample Payload
{
"productMasterDataList": {
"itemCode": "2790",
"businessUnit": "01",
"itemDescription": "Organic Apples",
"isFtlItem": true,
"ftlCategory": "Fruits",
"brandName": "French Farms",
"packStyle": "Bag",
"packSize": "5 lbs",
"productCommodity": "Apple",
"productVariety": "Fuji",
"scientificName": "Malus domestica",
"acceptableSpeciesName": "Apple",
"gtin": "01234567891234",
"itemUpc": "012345678912",
"innerPackUpc": "012345678913",
"plu": "4131",
"alternateItemCode": "2790-ALT",
"isCoveredByGdst": true,
"grossWeight": 2,
"grossWeightUOM": "LB",
"netWeight": 1.5,
"netWeightUOM": "LB"
}
}
Response
- 200
- 400
Product data ingested successfully
{
"request_ids": [
"1abc2f7e-6ca2-40ec-9566-19a850945d7f"
]
}
Description of what user-fixable validation error occurred and in what part of the payload
{
"detail": "'itemCode' is a required property - 'productMasterDataList.0'",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}